package com.demo.java.OD1_50.OD2;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 分糖果问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145497197
 */
public class test1 {

    /**
     * 计算根据给定的 n 执行操作所需的步骤数
     * @param n 需要处理的数
     * @return 所需的步骤数
     */
    public static int candy(int n) {
        int index = 0; // 记录步骤数

        // 特殊情况处理：当 n 为 3 时，直接返回 4 步
        if (n == 3) {
            return 4;
        }

        // 使用 while 循环逐步处理 n，直到 n 为 1
        while (n != 1) {
            // 如果 n 是奇数，进行调整：增加或减少 1
            if (n % 2 != 0) {
                if ((n + 1) / 2 % 2 == 0) {
                    n++; // 如果 +1 后能被 2 整除且结果为偶数，则增加 1
                } else {
                    n--; // 否则减少 1
                }
                index++; // 步骤数增加
            } else {
                n /= 2; // 如果是偶数，直接除以 2
                index++; // 步骤数增加
            }
        }
        return index; // 返回最终的步骤数
    }

    public static void main(String[] args) {
        // 使用 try-with-resources 语法，确保 Scanner 被正确关闭
        try (Scanner s = new Scanner(System.in)) {
            System.out.print("请输入数字: ");
            if (s.hasNextInt()) {
                int num = s.nextInt();
                System.out.println("需要的步骤数: " + candy(num));
            } else {
                System.out.println("输入无效，请输入一个整数！");
            }
        } catch (Exception e) {
            System.out.println("发生错误: " + e.getMessage());
        }
    }
}
